package org.applause.lang.ui.wizard; import java.util.Arrays; import org.applause.lang.ui.builder.BuildStrategyRegistry; import org.applause.lang.ui.builder.MobilePlatform; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.jface.viewers.ICheckStateListener; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; public class GeneratorFragmentSelectionWizardPage extends WizardPage { private class TableLabelProvider extends LabelProvider implements ITableLabelProvider { public Image getColumnImage(Object element, int columnIndex) { return null; } public String getColumnText(Object element, int columnIndex) { if (element instanceof MobilePlatform) { MobilePlatform platform = (MobilePlatform) element; return platform.getName(); } return element.toString(); } } private Table table; private CheckboxTableViewer checkboxTableViewer; /** * Create the wizard. */ public GeneratorFragmentSelectionWizardPage() { super("platformSelectionPage"); setTitle("Target Platform Selection"); setDescription("Choose one or more target platforms for your project."); validatePage(); } private void validatePage() { if (getSelectedPlatforms().length > 0) { setPageComplete(true); setErrorMessage(null); } else { setPageComplete(false); setErrorMessage("Please choose one or more target platforms for your project."); } } /** * Create contents of the wizard. * @param parent */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); container.setLayout(new GridLayout(1, false)); checkboxTableViewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER | SWT.FULL_SELECTION); table = checkboxTableViewer.getTable(); GridData gd_table = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); gd_table.heightHint = 272; gd_table.widthHint = 581; table.setLayoutData(gd_table); checkboxTableViewer.setLabelProvider(new TableLabelProvider()); checkboxTableViewer.setContentProvider(new ArrayContentProvider()); checkboxTableViewer.setInput(BuildStrategyRegistry.getSupportedMobilePlatforms()); checkboxTableViewer.addCheckStateListener((new ICheckStateListener() { @Override public void checkStateChanged(CheckStateChangedEvent event) { validatePage(); } })); } public MobilePlatform[] getSelectedPlatforms() { if (isControlCreated() ) { Object[] checkedElements = checkboxTableViewer.getCheckedElements(); MobilePlatform[] platforms = Arrays.asList(checkedElements).toArray(new MobilePlatform[checkedElements.length]); return platforms; } else { return new MobilePlatform[0]; } } }